package protect.week02;

/**
 * @author thinkpad - 83start
 * @version v1.0
 * @create 2022/9/6 22:13
 * @package protect.week02
 * @description 693. 交替位二进制数
 *
 * 给定一个正整数，检查它的二进制表示是否总是 0、1 交替出现：换句话说，就是二进制表示中相邻两位的数字永不相同。
 *
 *  
 *
 * 示例 1：
 *
 * 输入：n = 5
 * 输出：true
 * 解释：5 的二进制表示是：101
 * 示例 2：
 *
 * 输入：n = 7
 * 输出：false
 * 解释：7 的二进制表示是：111.
 * 示例 3：
 *
 * 输入：n = 11
 * 输出：false
 * 解释：11 的二进制表示是：1011.
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/binary-number-with-alternating-bits
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

public class Ch01_HasAlternatingBits {
    public boolean hasAlternatingBits(int n) {

        // 1. 将整数转换为二进制
        String binaryStringN = Integer.toBinaryString(n);


        // 2. 循环判断数字是否相同
        // 切割字符串，并且将每一个字符赋值给一个临时变量，与后一位字符比较，如果相同，则结束循环
        boolean flag = true;
        // 将字符串的第一个字符赋值给 临时变量
        char tmp = binaryStringN.charAt(0);
        for (int i = 1; i < binaryStringN.length(); i++) {
            // 如果碰到相等的情况，则为false
            if (tmp == binaryStringN.charAt(i)){
                flag = false;
                break;
            }else {
                tmp = binaryStringN.charAt(i);
            }
        }

        return flag;
    }

    public static void main(String[] args) {
        System.out.println(Integer.toBinaryString(3));
    }
}
